/**
 * 权限码
 */
import Vue from 'vue'
import store from '@/store'
const AUTH_CODE = {
  'auth1': '1001_1001', // 入职请求
  'auth2': '1001_1002', // 邀请记录
  'auth3': '1001_1003', // 邀请新员工
  'auth4': '1001_1004', // 组织角色按钮
  'auth5': '1001_1005', // 移除
  'auth6': '1002_1001', // 编辑组织员工
  'auth7': '1002_1002', // 查看树形图
  'auth8': '1003_1001_1001', // 创建角色
  'auth9': '1003_1001_1002', // 权限编辑
  'auth10': '1003_1001_1003', // 删除
  'auth11': '1003_1002_1001', // 创建权限组
  'auth12': '1003_1002_1002', // 编辑角色
  'auth13': '1003_1002_1003', // 删除
  'auth14': '1004', // 应用管理
  'auth15': '1005', // 供应商管理
  'auth16': '1005_1001', // 邀请管理
  'auth17': '1005_1002', // 邀请供应商
  'auth18': '1005_1003', // 详情
  'auth19': '1005_1004', // 编辑
  'auth20': '1005_1006', // 移出
  'auth21': '1006', // 服务企业管理
  'auth22': '1006_1001', // 审核页面
  'auth23': '1006_1001_1001', // 编辑我的信息
  'auth24': '1007', // 安全管理
  'auth25': '1007_1001', // 登录日志
  'auth26': '1007_1002', // 操作日志
  'auth27': '1007_1001_1001', // 登录日志导出
  'auth28': '1007_1001_1002' // 操作日志导出
}
const permission = (value = []) => {
  const { permissionList, id } = store.getters && store.getters.roles
  value = value.map(item => {
    if (AUTH_CODE[item]) {
      return AUTH_CODE[item]
    } else {
      return item
    }
  })
  if (id === 1) return true // === 1 管理员  都显示
  if (value) {
    let hasPermission = null
    const permissionRoles = value
    if (value instanceof Array) {
      if (value.length > 0) {
        // id === 0 有的不走权限
        if (id === 0 && permissionRoles.includes(0)) {
          return true
        }
        hasPermission = permissionList.some(role => {
          return permissionRoles.includes(role)
        })
      }
    } else {
      hasPermission = permissionList.includes(permissionRoles)
    }
    if (!hasPermission) {
      return false
    }
    return hasPermission
  } else {
    throw new Error(`需要填写权限，比如这样： v-permission="['admin','editor']"`)
  }
}

Object.defineProperty(Vue.prototype, '$auth', { value: AUTH_CODE })
Object.defineProperty(Vue.prototype, '$permission', { value: permission })
export default AUTH_CODE
